from flask import Blueprint
from werkzeug import exceptions
from utils.api_response_utils import create_error_response

class ErrorController:
    """错误控制器，处理全局错误"""
    
    def __init__(self, app):
        """
        初始化错误控制器
        
        Args:
            app: Flask应用实例
        """
        self.app = app
        self.register_error_handlers()
    
    def register_error_handlers(self):
        """注册错误处理器"""
        
        @self.app.errorhandler(415)
        def unsupported_media_type(e):
            return create_error_response(415, "请求的Content-Type必须为'application/json'")

        @self.app.errorhandler(Exception)
        def handle_exception(e):
            # 处理HTTP异常
            if isinstance(e, exceptions.HTTPException):
                return create_error_response(e.code, str(e))
            
            # 处理其他异常
            return create_error_response(500, f"服务器内部错误: {str(e)}")

        @self.app.errorhandler(400)
        def bad_request(e):
            return create_error_response(400, "请求格式不正确或缺少必要参数")